package gestion.dao;

import gestion.conexion.ConexionBD;
import gestion.excepcion.DAOExcepcion;
import gestion.modelo.CentroFormacion;
import gestion.modelo.Estudiante;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;



public class EstudianteDAO extends BaseDAO{
	
	public Collection<Estudiante> listarEstudiante() throws DAOExcepcion{
		Collection<Estudiante> lista= new ArrayList<Estudiante>();
		

		String query = "select idpersona,idcentro_informacion, nombre, paterno,materno  from persona";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Estudiante vo = new Estudiante();
				CentroFormacion co=new CentroFormacion();
				
				vo.setIdpersona(rs.getInt("idpersona"));
				co.setId(rs.getInt("idcentro_informacion"));
				vo.setCentro(co);
				vo.setNombres(rs.getString("nombre"));
				vo.setPaterno(rs.getString("paterno"));
				vo.setMaterno(rs.getString("materno"));				
				lista.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		System.out.println(lista.size());		
		
		return lista;
		
		
	}
	
	public HashMap<Integer,Integer> listaEstudianteXCentroFormacion() throws DAOExcepcion{
		
		HashMap<Integer,Integer> list=new HashMap<Integer, Integer>();
		String query = "select idcentro_informacion, count(idpersona) as cantidad from persona group by idcentro_informacion";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			while (rs.next()) {
				list.put(rs.getInt("idcentro_informacion"),rs.getInt("cantidad"));
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		System.out.println("cantidad de registros: "+list.size());
		
		return list;
	}
	
	
	

}
